import type { WaitRegisterDTO } from './RegisterDTO';

// 用户信息接口
export interface UserInfo {
  id: number | null;
  profileId: string;
  name: string;
  avatar: string | null;
  username: string | null;
  email?: string;
  systemRole?: string;
  signature?: string;
}

// 用户详细信息接口
export interface UserDetailInfo {
  id: number;
  name: string;
  profileId: string;
  email: string;
  username: string;
  systemRole: string;
  avatar: string;
  signature: string;
}

// 登录请求接口
export interface LoginRequest {
  identifier: string; // 学号或注册邮箱
  password: string;
}

// 登录响应接口
export interface LoginResponse {
  code: number | string;
  message?: string;
  msg?: string;
  data?: {
    token: string;
    id: number | null;
    username: string | null;
    name: string;
    avatar: string | null;
    profileId: string;
  };
}

// 发送验证码请求接口
export interface SendCodeRequest {
  email: string;
  scene: number; // 1表示注册，2表示找回密码
  name: string;
  profileId: string; // 学号或者工号
  phoneNumber: string;
  passwordHash: string; // 密码
  passwordConfirmation: string;
  systemRole: number; // 1表示学生，2表示老师
}

// 完成注册请求接口
export interface FinalizeRegisterRequest {
  email: string;
  code: string;
  scene: number; // 1表示注册，2表示找回密码
}

// 完成注册响应接口
export interface RegisterResponse {
  code: number | string;
  message?: string;
  msg?: string; // 兼容两种可能的字段名
  data?: {
    token: string;
    userInfo: UserInfo;
  };
}

// 请求重置密码接口
export interface RequestPasswordResetRequest {
  email: string;
}

// 重置密码接口
export interface ResetPasswordRequest {
  email: string;
  code: string;
  newPassword: string;
  newPasswordConfirmation: string;
}

// 通用响应接口
export interface ApiResponse<T = unknown> {
  code: number | string;
  data?: T;
  message?: string;
  msg?: string; // 兼容两种可能的字段名
}

export type { WaitRegisterDTO }; 